{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 公众号：数据不吹牛，更多案例和有趣分析等你来撩"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from selenium import webdriver\n",
    "import random\n",
    "import os\n",
    "import time"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 爬取单页评价（每页20条）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_page(driver):\n",
    "    \n",
    "    result = pd.DataFrame()\n",
    "    for i in driver.find_elements_by_xpath('//div[@class = \"rate-grid\"]/table/tbody/tr'):\n",
    "        try:\n",
    "            content = i.find_element_by_xpath('td[@class = \"tm-col-master\"]/div[@class = \"tm-rate-content\"]').text\n",
    "            #评价日期\n",
    "            date = i.find_element_by_xpath('td[@class = \"tm-col-master\"]/div[@class = \"tm-rate-date\"]').text\n",
    "            #购买产品\n",
    "            sku = i.find_element_by_xpath('td[@class = \"col-meta\"]/div[@class = \"rate-sku\"]').text\n",
    "\n",
    "            #用户名\n",
    "            username = i.find_element_by_xpath('td[@class = \"col-author\"]/div[@class = \"rate-user-info\"]').text\n",
    "            append_time = None\n",
    "            append_content = None\n",
    "\n",
    "        except:\n",
    "            content = i.find_element_by_xpath('td[@class = \"tm-col-master\"]/div[@class = \"tm-rate-premiere\"]/div[@class = \"tm-rate-content\"]').text\n",
    "            #评价日期\n",
    "            date = i.find_element_by_xpath('td[@class = \"tm-col-master\"]/div[@class = \"tm-rate-premiere\"]/div[@class = \"tm-rate-tag\"]/div[@class = \"tm-rate-date\"]').text\n",
    "            #购买产品\n",
    "            sku = i.find_element_by_xpath('td[@class = \"col-meta\"]/div[@class = \"rate-sku\"]').text\n",
    "            #用户名\n",
    "            username = i.find_element_by_xpath('td[@class = \"col-author\"]/div[@class = \"rate-user-info\"]').text\n",
    "\n",
    "            append_time = i.find_element_by_xpath('td[@class = \"tm-col-master\"]/div[@class = \"tm-rate-append\"]/div[1]').text\n",
    "            append_content = i.find_element_by_xpath('td[@class = \"tm-col-master\"]/div[@class = \"tm-rate-append\"]/div[2]').text\n",
    "\n",
    "        df = pd.DataFrame({'用户名':[username],'购买产品':[sku],'评价日期':[date],'初评内容':[content],\n",
    "                         '追评时间':[append_time],'追评内容':[append_content]})\n",
    "\n",
    "        result = pd.concat([result,df])\n",
    "    \n",
    "    return result,driver"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 循环爬取，需要提前指定网址和评论总数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "url = 'https://detail.tmall.com/item.htm?spm=a230r.1.14.1.70f65edadaPTn3&id=521921506095&ns=1&abbucket=18'\n",
    "\n",
    "def carwl_product_comment(driver,url,max_num = 100):\n",
    "    driver.get(url)\n",
    "    \n",
    "    time.sleep(5)\n",
    "    #关掉要求登录的弹窗，就能够不登录状态下爬取\n",
    "    driver.find_element_by_xpath('//div[@class = \"sufei-dialog-close\"]').click()\n",
    "    \n",
    "    driver.implicitly_wait(5)\n",
    "    #点击到评论页面\n",
    "    try:\n",
    "        driver.find_element_by_xpath('//ul[@class = \"tabbar tm-clear\"]/li[2]').click()\n",
    "    except:\n",
    "        driver.implicitly_wait(5)\n",
    "        driver.find_element_by_xpath('//ul[@class = \"tabbar tm-clear\"]/li[2]').click()\n",
    "        \n",
    "    max_page = int(max_num / 20)\n",
    "    \n",
    "    if max_page > 90:\n",
    "        max_page = 90\n",
    "    else:\n",
    "        pass\n",
    "    \n",
    "    c = 1\n",
    "    final_re = pd.DataFrame()\n",
    "\n",
    "    while c <= max_page:\n",
    "        result,driver = get_page(driver)\n",
    "        final_re = pd.concat([final_re,result])\n",
    "        print('Bro，完成第{}页爬取'.format(c))\n",
    "\n",
    "        #点击下一页\n",
    "        driver.find_element_by_link_text('下一页>>').click()\n",
    "        c += 1\n",
    "        time.sleep(random.random() + 3)\n",
    "    return final_re"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 运行\n",
    "#### 这里使用的是selenium中的PhantomJS，同学们也可以尝试Chrome，安装坑略多，不过网上都能找到相关解决方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [],
   "source": [
    "driver = webdriver.PhantomJS()\n",
    "final_re = carwl_product_comment(driver,url)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 情感分词"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>品牌</th>\n",
       "      <th>买家</th>\n",
       "      <th>评价日期</th>\n",
       "      <th>初评内容</th>\n",
       "      <th>追评</th>\n",
       "      <th>SKU</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>三个魔发匠</td>\n",
       "      <td>t**4</td>\n",
       "      <td>2019-11-21</td>\n",
       "      <td>用了之后真的是促进每个神经细胞的，洗发水的泡沫比较丰富的，不需要拿沐浴球搓，随便用手搓搓就可...</td>\n",
       "      <td>姗姗来迟的生姜洗发水，在关键时刻起到了最大的作用，洗头发顺顺滑滑的，特别清新，留香持久，洗的...</td>\n",
       "      <td>化妆品净含量：(2瓶）生姜洗发水500ml+500ml</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>三个魔发匠</td>\n",
       "      <td>t**3</td>\n",
       "      <td>2019-11-23</td>\n",
       "      <td>生姜洗发水用着很舒服，根据使用方法来洗一个地方就按一次，把头皮都按了个遍，很舒服，而且泡泡很...</td>\n",
       "      <td>淡淡的姜香味，闻着挺舒服的，而且这个控油去屑的效果真是无敌，不用再看到满头的头皮屑的感觉真好...</td>\n",
       "      <td>化妆品净含量：（1瓶）生姜洗发水500ml</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>三个魔发匠</td>\n",
       "      <td>喃**y</td>\n",
       "      <td>2019-11-22</td>\n",
       "      <td>朋友推荐来买的这款生姜洗发水，根据她们说效果很好！生姜发水一大瓶超级划算，九零后已经走上了防...</td>\n",
       "      <td>我闻着洗发水有很浓的生姜味道，但又不会很刺鼻，蛮好的，洗发后头皮不痒、没有头皮屑，至于生发效...</td>\n",
       "      <td>化妆品净含量：（1瓶）生姜洗发水500ml</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>三个魔发匠</td>\n",
       "      <td>f**0</td>\n",
       "      <td>2019-11-22</td>\n",
       "      <td>脱发的故事是缓缓写到结局，这款生姜洗发水是生姜提取物成分，使用也是非常的放心，而且这款洗发水...</td>\n",
       "      <td>唠唠叨叨的用这款洗发水洗头发非常舒服，洗发水温和的一点刺激感都没有，而且发质还变好了，包装的...</td>\n",
       "      <td>化妆品净含量：【1瓶】生姜洗发水500ml+【1瓶】香氛护发素500ml</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>三个魔发匠</td>\n",
       "      <td>z**珍</td>\n",
       "      <td>2019-11-24</td>\n",
       "      <td>水油平衡也改善了，洗发水用着很舒服，洗一个地方就要按一次，而且泡泡很容易冲洗干净，吹干头发超...</td>\n",
       "      <td>太值了，这款三个魔发匠生姜洗发水的香味我很喜欢，使用了以后感觉头发很顺，也不用油了，可以除螨...</td>\n",
       "      <td>化妆品净含量：【1瓶】生姜洗发水500ml+【1瓶】香氛护发素500ml</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      品牌    买家       评价日期                                               初评内容  \\\n",
       "0  三个魔发匠  t**4 2019-11-21  用了之后真的是促进每个神经细胞的，洗发水的泡沫比较丰富的，不需要拿沐浴球搓，随便用手搓搓就可...   \n",
       "1  三个魔发匠  t**3 2019-11-23  生姜洗发水用着很舒服，根据使用方法来洗一个地方就按一次，把头皮都按了个遍，很舒服，而且泡泡很...   \n",
       "2  三个魔发匠  喃**y 2019-11-22  朋友推荐来买的这款生姜洗发水，根据她们说效果很好！生姜发水一大瓶超级划算，九零后已经走上了防...   \n",
       "3  三个魔发匠  f**0 2019-11-22  脱发的故事是缓缓写到结局，这款生姜洗发水是生姜提取物成分，使用也是非常的放心，而且这款洗发水...   \n",
       "4  三个魔发匠  z**珍 2019-11-24  水油平衡也改善了，洗发水用着很舒服，洗一个地方就要按一次，而且泡泡很容易冲洗干净，吹干头发超...   \n",
       "\n",
       "                                                  追评  \\\n",
       "0  姗姗来迟的生姜洗发水，在关键时刻起到了最大的作用，洗头发顺顺滑滑的，特别清新，留香持久，洗的...   \n",
       "1  淡淡的姜香味，闻着挺舒服的，而且这个控油去屑的效果真是无敌，不用再看到满头的头皮屑的感觉真好...   \n",
       "2  我闻着洗发水有很浓的生姜味道，但又不会很刺鼻，蛮好的，洗发后头皮不痒、没有头皮屑，至于生发效...   \n",
       "3  唠唠叨叨的用这款洗发水洗头发非常舒服，洗发水温和的一点刺激感都没有，而且发质还变好了，包装的...   \n",
       "4  太值了，这款三个魔发匠生姜洗发水的香味我很喜欢，使用了以后感觉头发很顺，也不用油了，可以除螨...   \n",
       "\n",
       "                                    SKU  \n",
       "0           化妆品净含量：(2瓶）生姜洗发水500ml+500ml  \n",
       "1                 化妆品净含量：（1瓶）生姜洗发水500ml  \n",
       "2                 化妆品净含量：（1瓶）生姜洗发水500ml  \n",
       "3  化妆品净含量：【1瓶】生姜洗发水500ml+【1瓶】香氛护发素500ml  \n",
       "4  化妆品净含量：【1瓶】生姜洗发水500ml+【1瓶】香氛护发素500ml  "
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from snownlp import SnowNLP\n",
    "\n",
    "sens = []\n",
    "\n",
    "for text in final_re['初评内容']:\n",
    "    s = SnowNLP(text)\n",
    "    sens.append(s.sentiments)\n",
    "    \n",
    "final_re['初评情感评分'] = sens"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 情感评分分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.49948609661261906"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_re['初评情感评分'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>情感评分</th>\n",
       "      <th>初评情感评分</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>8980.000000</td>\n",
       "      <td>8980.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.499448</td>\n",
       "      <td>0.499448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.347043</td>\n",
       "      <td>0.347043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.145513</td>\n",
       "      <td>0.145513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.489421</td>\n",
       "      <td>0.489421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.847504</td>\n",
       "      <td>0.847504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              情感评分       初评情感评分\n",
       "count  8980.000000  8980.000000\n",
       "mean      0.499448     0.499448\n",
       "std       0.347043     0.347043\n",
       "min       0.000000     0.000000\n",
       "25%       0.145513     0.145513\n",
       "50%       0.489421     0.489421\n",
       "75%       0.847504     0.847504\n",
       "max       1.000000     1.000000"
      ]
     },
     "execution_count": 234,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_re.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x2be35940>"
      ]
     },
     "execution_count": 243,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAFICAYAAABTOjiAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XeYlNXZx/HvzSLFFgSxoIg9do1g14TYjbxiYokFSyxgjD1GTWKJURM1Go01YtdojCX2HmtiIgpq7KJGUVQQRQOKSDvvH2c3rOvCDjA7z8zu93Ndz7XszMPMzQPM/PbMOfeJlBKSJElSe9eh6AIkSZKkamAwliRJkjAYS5IkSYDBWJIkSQIMxpIkSRJgMJYkSZIAg7EkSZIEGIwlSZIkwGAsSZIkAdCxqCdedNFF07LLLlvU00uSJKkdGDFixEcppZ6lnFtYMF522WUZPnx4UU8vSZKkdiAiRpV6rlMpJEmSJAzGkiRJEmAwliRJkgCDsSRJkgQYjCVJkiTAYCxJkiQBBmNJkiQJMBhLkiRJgMFYkiRJAgzGkiRJEmAwliRJkgDoWHQBUlUaOrSY5x08uJjnlSRJjhhLkiRJYDCWJEmSAIOxJEmSBBiMJUmSJMBgLEmSJAEGY0mSJAkwGEuSJEmAwViSJEkCDMaSJEkSYDCWJEmSAIOxJEmSBBiMJUmSJMBgLEmSJAElBOPITo+IVyPi7Yi4JyJ6NjnnqogYGxFv1B/7t17JkiRJUvmVMmIcwDvAGsBywIfA8c2cd2xKacX64/Iy1ihJkiS1uhaDcUppRkrpopTStJRSAoYDPVq/NEmSJKly5miOcUTMB+wDXNfkrmnAKRHxekRcGhHdZvH7B0fE8IgYPm7cuLmrWJIkSWoFJQfjiOgAXAE8klK6t/F9KaUDUkq9gb5AN+CM5h4jpTQ0pdQvpdSvZ8+ezZ0iSZIkFaKkYBwRHcmjxONSSsfM6ryU0gTgGmCt8pQnSZIkVUYpXSk6A38FXk4pHTWLc77Z6NxBwBPlLFKSJElqbR1LOOdAYDtgtYjYp/62W4DOwP310yrOjog1yXONHwRObI1iJUmSpNbSYjBOKV0AXNDCOQPKVpEkSZJUAHe+kyRJkjAYS5IkSYDBWJIkSQJKW3wnSZJUnYYOLeZ5Bw8u5nnVqhwxliRJkjAYS5IkSYDBWJIkSQIMxpIkSRJgMJYkSZIAg7EkSZIEGIwlSZIkwGAsSZIkAQZjSZIkCTAYS5IkSYDBWJIkSQIMxpIkSRJgMJYkSZIAg7EkSZIEGIwlSZIkwGAsSZIkAQZjSZIkCTAYS5IkSYDBWJIkSQIMxpIkSRJgMJYkSZIAg7EkSZIEGIwlSZIkwGAsSZIkAQZjSZIkCTAYS5IkSYDBWJIkSQIMxpIkSRJgMJYkSZIAg7EkSZIEGIwlSZIkwGAsSZIkAQZjSZIkCTAYS5IkSYDBWJIkSQJKCMaRnR4Rr0bE2xFxT0T0bHLOOhHxTES8GxEPRsSSrVeyJEmSVH6ljBgH8A6wBrAc8CFw/P/ujOgA3AKcklLqDQwH/lD+UiVJkqTW07GlE1JKM4CLGr6PiOHAho1O6QvUpZRurf/+IuD1iIiUUipnsZIkSVJrmaM5xhExH7APcF2jm1cA/tPo+9HkwN29md8/OCKGR8TwcePGzUW5kiRJUusoORjXT5m4AngkpXRvo7tm1B+NpWZuI6U0NKXUL6XUr2fPnk3vliRJkgpTUjCOiI7kUeJxKaVjmtw9Glim0fdLAZNSSp+Up0RJkiSp9ZXSlaIz8Ffg5ZTSUc2c8hQwf0RsU//9wcC15StRkiRJan0tLr4DDgS2A1aLiH3qb7sF6Azcn1K6NyJ2AoZGxOXAM+R5yJIkSVLNKKUrxQXABS2cMwxYu1xFSZIkSZXmzneSJEkSBmNJkiQJMBhLkiRJgMFYkiRJAgzGkiRJEmAwliRJkgCDsSRJkgQYjCVJkiTAYCxJkiQBBmNJkiQJMBhLkiRJgMFYkiRJAgzGkiRJEmAwliRJkgCDsSRJkgQYjCVJkiTAYCxJkiQBBmNJkiQJMBhLkiRJgMFYkiRJAgzGkiRJEmAwliRJkgCDsSRJkgQYjCVJkiTAYCxJkiQBBmNJkiQJMBhLkiRJgMFYkiRJAgzGkiRJEmAwlmbvvffggQfgtdcgpaKrkSRJrahj0QVIVWfkSLj7bhg+HN5/f+btSy4J3/kObLghdO1aXH2SJKlVGIwlgClT4Lzz4Prr4dln820rrgi77QZrrZVHjB99FG64AW69NYfj/v2hV68iq5YkSWVkMFbLhg4t5nkHD67M80yeDDvvnEeJ118ffv/7HJQXWWTmORtvnI+33oLHHoMnnshft9gCdtkFIipTqyRJajUGY7VvX3wB3/8+3H8/XHwxHHRQvn1WPwwst1w+dt4ZbrsNHnoIevTIAVmSJNU0g7Har0mTYIcd4OGH4fLLYb/9Sv+9Cy4Ie+wBEyfCTTfBoovC2mu3Xq2SJKnV2ZVC7dNnn8H3vgePPAJXXz1nobhBhw6w//7Qpw9cdhmMGlX+OiVJUsUYjNX+TJgA224L//gH/OlPsNdec/9YnTrBwQfnEeQLL4Tx48tXpyRJqiiDsdqX//4Xtt4ahg3LHSZ2333eH/Mb34BDDoEvv4QLLsjzliVJUs0xGKv9SCl3uhgxAm6+OS+gK5elloIhQ+CDD+DSS2H69PI9tiRJqoiSg3FE1EXE+q1ZjNSqrr4abrwRTjkFBg4s/+OvtlpekPfSS/DXv5b/8SVJUqtqMRhHRMeIuBEYAzw8i3OuioixEfFG/bF/uQuV5skbb+TpDv37w89+1nrPs9lm8O1v5zZujXfNkyRJVa+UEeMEXAv0b+G8Y1NKK9Yfl89zZVK5TJ2aR3I7dYJrr4W6utZ9voED85bRN93Uus8jSZLKqsVgnFKanlK6E/i8AvVI5XfSSfD003nu79JLt/7zLbggbL89vPwyvPhi6z+fJEkqi3ItvpsGnBIRr0fEpRHRrbmTImJwRAyPiOHjxo0r01NLs/Hoo3D66bnf8E47Ve55+/eHxRbLi/xciCdJUk0oSzBOKR2QUuoN9AW6AWfM4ryhKaV+KaV+PXv2LMdTS7M2fjwMGgQrrgjnnlvZ5+7YMQfxDz6Av/+9ss8tSZLmSlnbtaWUJgDXAGuV83GlOdbQmm3sWLj++jy9odLWXhtWXhnuuCNvPy1JkqpaWYJxRHyz/mtnYBDwRDkeV5prV18Nt9wCp50G/foVU0ME7LJLDsX33FNMDZIkqWQlBeOIeBV4FJi/vh3bHRFxbkRsV3/K2RExCngZ+AQ4sVWqlUoxZgwceWRunXb00cXWsswysNFG8PDD4Lx6SZKqWsdSTkoprdLC/QPKU45UBocfnkdphw6FDlWwuePAgXm3vVtugYMOKroaSZI0C1WQGqQyuuuuvLvd8cfDKrP9ea5yunWDbbaBZ5+FkSOLrkaSJM2CwVhtx8SJcPDBsPrqcOyxRVfzVVttBYssktu3pVR0NZIkqRkGY7Udxx8Po0fnjTw6dSq6mq/q1AkGDIBRo+CVV4quRpIkNcNgrLZh2DA4//w8YrzRRkVX07wNNsjTKu67r+hKJElSMwzGqn1Tp8KBB0KvXvCb3xRdzazNNx9ssQW89hq8/XbR1UiSpCYMxqp9Z50FL7wAF14ICy9cdDWzt9lm0LUr3H9/0ZVIUtuXUm6VOW1a0ZWoRpTUrk2qWq+/DiefnLdfHjiw6Gpa1rUr9O+fp1OMHQuLL150RZLUtkyYAC+/nI9XXsnfd+6cOxWttlpeoN2zZ9FVqkoZjFW7GrZ97tIlzy+uFZtvDg8+CA88AHvtVXQ1klT7JkyAv/0NXnopL8IGWHBBWHVVWGEFeO+9HJT//e98X8+eOSBvuaUhWV9hMFbtuuwyePTRvJHHkksWXU3pFl4YNtkEnngC/u//8oI8SdLcefZZuO46+PxzWHFF2HHHPDLcu/dXN3lKCT78MIfnl1/Or8EjRsChh0KfPsXVr6piMFZteu+9vN3zd78LBxxQdDVzbqut4PHH4aGH8jQQSdKc+fRTOOwwuPZaWGYZOOqovAh7ViLy9LXFF8+f3I0dC3/4A5x9du5oVC2bQqlQLr5T7Ukpv4hNnZpHiyOKrmjO9ewJ/frlcDxpUtHVSFJtefBBWHNNuP562H57OO642Yfi5iy+OBxzDPTokafjjRjROrWqphiMVXtuugnuuAN+/ev8sVmt2nprmDwZHnus6EokqTZMmpSnPmy9dZ5D/K9/wQ47QF3d3D1et27508c+ffLmUI8/Xt56VXMMxqotH38MhxySR1uPOKLoaubNMsvkeXAPPQRTphRdjSRVt08/zYH4ggvy6/8zz8B668374y6wQH68NdbIc5Xvvjt/Mql2yWCs2nLkkfDJJ3D55dCxDUyR33ZbmDgxj3pIkpo3dmxeU/LUU/lTw3POye0vy6VTJ/jxj2HDDfMnknfdVb7HVk0xGKt23HdfXmTx85/DWmsVXU15rLwyLLtsbt02Y0bR1UhS9Rk1Km+ONHJkDqw779w6z1NXB/vsk8PxPffAO++0zvOoqhmMVRsmToQhQ3JPyl/+suhqyicCttkGPvoInnuu6Gokqbq8+ipsumneve7BB/NUitbUoQP88Id5/vI118D06a37fKo6BmPVhp//HN59N/cu7ty56GrKa511YNFFc3N6SVL2zDN5pHjq1LxIeeONK/O8888Pu++e33MefLAyz6mqYTBW9bvvPrjwwtyvslIvjJXUoUPuqfnmmzBsWNHVSFLx/vGPPKd4gQXg73+v/PS5ddeFb30rT90YO7ayz61CGYxV3caNg333zauFTz+96Gpazyab5K2tzzmn6EokqVj/+hdst13e0fQf/4CVViqmjt12y4u8//Qnu1S0IwZjVa+UYP/9cxeK667LwbGt6tIlf2R4880u+JDUfo0YkUPxEkvAww/D0ksXV0u3bnmh38iReftotQsGY1WvSy6BO++EM85oO10oZmfzzfPX888vtg5JKsLzz+fFdYsskkPxnO5k1xo22SR3D7r55txHWW2ewVjV6YMP8r73W2+d5xa3B92759GJoUNzFw5Jai9eeQW23DL3Jn74Yejdu+iKsggYNAimTYMbbii6GlWAwVjVZ9q0vIHH/PPDVVflxWntxVFHwYQJcOWVRVciSZXxxhuwxRb5tf7hh2G55Yqu6KsWXxwGDIBnn82dMtSmtaPEoZpx++25Tc7ll+fFF+3J+uvnj+7OPdf+mZLavrffztPIpk6Fhx7K0xaq0VZb5VHsm27ytbmNMxirurz6au4b+e1vw8CBRVdTjKOOgrfeyj8gSFJb9e67ORRPnJhf91dfveiKZq2uLr8njR+ft6VWm2UwVvVomEKw2GKtt+VnLRg4MH+UaOs2SW3Ve+/lPsXjx8MDD+SNjqrdGmvkLhn33w8zZhRdjVqJwVjVYfp0uPRS+PxzOPDAtre73Zyoq4PDD8/9Ox2ZkNTWfPBBDsUffphD5nrrFV1RaSJg221z/f/+d9HVqJUYjFUdbrkl94ocNKh6ViMXab/9YOGFHTWW1LaMGZOnT3zwQd7VdIMNiq5ozvTtmz/VvPdeN/1oowzGKt5TT+VFF5tvDhtuWHQ11WGhhWDw4LzQww0/JLUFH36Yu0+88w7ccw9svHHRFc25Dh1yG9FRo/L7ltocg7GK9e67cM01sOKK7XtecXMOOyx/dHf22UVXIknz5qOPcih+6y24++6802et2nDDvCveb35TdCVqBQZjFefzz+GPf4QFFsijo3V1RVdUXXr3zlNLLr00v6lIUi0aMyaH4jfeyLuZ9u9fdEXzZr758mYkjzwCTz5ZdDUqM4OxijFjBlx2GXzyCQwZAt/4RtEVVadjjoEvvnCbaEm16a23YNNNZ4biLbYouqLy2GyzvFvpb39bdCUqM4OxinHHHfDyy7DbbrD88kVXU71WXRV23DEH488+K7oaSSrdCy/kDYvGj8/zcbfcsuiKyqdLlzzd7Y474MUXi65GZWQwVuWNGJFX9G6ySW3PM6uUY4/NI+uXXlp0JZJUmn/+M2/UFAF//3vbXFh96KF5KuDppxddicrIYKzKGjUqb+Kx/PKw++75RVOzt+GGeU7e2WfDlClFVyNJs3fffXl0uGdPeOKJ6t7Rbl507w4HHQQ33AD/+U/R1ahMOhZdgNqRTz+Fiy7Krch+/OO8gEGl+fnPYZtt4E9/yj2OJanaDB0KTz8NV1wBSy2VF1U/8EDRVbWuo47KU91+9zu4+OKiq1EZOGKsypgyJYfiL76An/wkb16h0m21FXzrW3DmmXmXQEmqJjNm5Pm2l10GK6wAP/1p+3id79UL9tknfxL68cdFV6MyMBir9aUEV1+dm7rvt1/ea15zJgKOOw5eew1uv73oaiRppk8/hR12yP2JN9oob2nftWvRVVXOIYfAl1/mnvyqeSUH44ioi4j1W7MYtVF33w3Dh+fuCuusU3Q1tWunnfJIzOmnuxWppOrw0kuw3npw//153cg++7S/aXJrrZXXggwd6mtzG9BiMI6IjhFxIzAGeHgW56wTEc9ExLsR8WBELFnuQlWjRozIvSs33DDPkdXcq6vLfY2ffjo3lpekIt18M2ywAUycmF+T+vdvvwuqhwyBV1/NHThU00oZMU7AtUD/5u6MiA7ALcApKaXewHDgD+UqUDXsnXdmdqAYNKj9vmCW0957wxJL2FReUnGmTs0LgnfZBdZcMw+AbLpp0VUVa9dd80ZVl1xSdCWaRy0G45TS9JTSncDnszilL1CXUrq1/vuLgB0iTEHt2sSJeYXuggvagaKcunSBI4+Ev/0tjxxLUiU9/3z+BPD003PXiUcfzR0o2rv554e99sqj6B99VHQ1mgflWHy3AtC4gd9ochu47k1PjIjBETE8IoaPGzeuDE+tqjR9et6MYsKE3OOxPaxMrqSDDoJFF80jNs5nk1QJU6bAySdDv34wenQOgJdcAp07F11Z9RgyJF+nq68uuhLNg3IE4xn1R2OpmdtIKQ1NKfVLKfXr2bNnGZ5aVemWW3L3hEGDYNlli66m7Vl4YTj++LzF6oMPFl2NpLbu2Wdh/fXhV7/K0ydeeikvBtZXrbEGbLyxi/BqXDmC8WhgmUbfLwVMSil9UobHVq158skc2DbfPLftUes46CBYbrm8XfSMr/0MKknzbvJkOPHEHIrHjoXbboPrrsufWKl5Q4bAyJF5iolqUjmC8VPA/BHR0HLgYPJiPbU377yTd2ZbeWXYeeeiq2nbOneGU0+F556DP/+56GoktSXTp+eevN/8JpxyCuyxRx4lHjiw6Mqq3y67wCKLuAivhpUUjCPiVeBRcgB+IyLuiIhzI2K7lNI0YCfgzIgYDawBnNBqFas6NV5sd+CBubWYWtduu+Xd8I4/PjeXl6R5kRLcdx+su27uR9yzZ/4E8OqrofvXlg2pOV275u5Bf/0rfPhh0dVoLpQUjFNKq6SUlk0pdUgprZhS2iGldERK6d76+4ellNZOKS1df5/TKNqT6dPznKqJE3MHChfbVUaHDnDGGfD22/mHEkmaWyNG5K3nt9suv5b/+c/w1FN5WpzmzJAhuaWdi/BqkltCa97dcUeeUzVoEPTpU3Q17ctWW8GWW+ZpFf/9b9HVSKo1TzwB3/9+7jbx3HPwhz/kjSp22y3/8K05t+qqsNlmecDINSA1x3/1mjevvZa3At1009zbUpV3xhnw8cdw5plFVyKpFkyfDrfemjsobLopPP44nHACvPkmHHYYdOpUdIW1b/BgeOMNdymtQQZjzb3PPoMrroDFFsu7/qgY664Lu+8O55wD779fdDWSqtUXX8Af/5hHNH/wAxgzBs4/Py+c/vWv885tKo+dd87zsl2EV3MMxpo7KeUOFBMnwgEH2OS9aKeeCtOm5Qb8ktTYiy/C4YdDr155HUi3bnDjjXkK3CGHwAILFF1h29OlS17AeOutLsKrMQZjzZ1//CM3fd9xR1hmmZbPV+tafvn8hnf55fDKK0VXI6lokybBVVfl6RJrrplHirfbDh57DIYNy23FOnYsusq27YAD8oDFddcVXYnmgMFYc27MmDzasOqqeeGXqsPxx+d2eQcd5IIPqT1KKYfegw/Oo8M/+hGMHw9nnw3vvQfXXw/f/jZEFF1p+7DaanlzlCuvdCe8GmIw1pyZOhUuuwzmmw/23ddVy9WkZ888z/jxx+HCC4uuRlKlvPsu/OY3ebBiww1zENt++zw6/MorcNRR7lZXlH33hRdegGeeKboSlcjPUTRnbr89vwgffHCep6bqsu++cPPNeavo7baDFVcsuiKpfRo6tHUff/LkPJ3tySdzd6CU8v/3vfaCvn3zRhOvvpoPFWe33eDII/O0lr59i65GJTAYq3SvvAIPPgjf+Q6svXbR1ag5EfkNefXV88eojz3mqL7UVkyfnl+Hhw3LPYenTMkjwdtvn0eKe/YsukI1tcgiuU/09dfDWWe5UL0GGIxVmi+/hGuvhcUXz21oVL2WWio36d93XzjvPDjiiKIrkjS3Usrt1J58Ep5+OncCmn/+HIQ32ABWWME5w9XuRz+CG27Im2HtskvR1agFBmOV5s478yYSRx9t8/dasPfeeUrFz38O3/serLxy0RVJmhMffZS3ZB42LC947tgR1lorh+HVV8/rPFQbttgCll46T6cwGFc9g7Fa9s478NBDeYvLlVYquhqVIiI3lm+YUvH441BXV3RVkmbn88/zIq0nn8y7pkGeN7znnnl+qv2Ga1NdXR6sOP30vAlTr15FV6TZMBhr9qZPz1MoFlwwz5NS7ejVK+9qtddecO658NOfFl2RpKamToWXXsph+IUXct/bJZaAgQNzqy+7SbQN++6bO4dce21eHK2qZTDW7DVsF3rggY5W1KI994SbboJf/jIv0FlllaIrkpQSvPlmniYxfHjejGOhhXKP4Q03zJsmOW+4bVlpJdhkk9xK75hj/PutYgZjzdqoUXnTiDXXtM1MrWo8pWKnnfKOhYssUnRVUvv0/vt53vDTT+c5xJ06wTrr5HnDq67qdKe27kc/yrvhDRuWfwBSVTIYq3kpwU9+kn+9++7+dFvLllgiL8TbZpu8hfcDD9gySKqUjz7Ko8JPPZV3n4vIn9z83//lUNylS9EVqlJ23RUOOyyPGhuMq5bBWM27+Wa4+274/e+dQtEWfPe7cPXVsMceeRHIn/9sf2OptYweDQ8/nAPxm2/m25ZfPm/20LcvLLxwsfWpGAstlD+5u+GGvEvp/PMXXZGaYTDW133yCRx6aH4BP/RQuOKKoitSOey+e37DPuYY6N07N5uXVB6jRsEtt+RBhX/9K9/Wq1f+lGa99VxEp+xHP8oL8G67LQ9UqOoYjPV1v/hF/vjv3ntz70y1HUcfnbf0PvvsHI4PP7zoiqTalBK8+CLcdRfcemueNwx5esSpp+aOPkssUWyNqj7f+Q4su2yeTmEwrkqmHn3Vv/+dtxQ+9FD41reKrkblFpE/whs9Go48Mu+S506GUmkmT4ZHHslh+K67cscegH79co/anXbKfYchv45KTXXoAPvsA7/+df73s8wyRVekJpxkqJlSytsHL7IInHRS0dWotdTVwXXXwcYbw6BBefMPSV83Y0YeLDjnHBgwAHr0yDtJXnVVHji49NK8oO7pp3Nv2oZQLM3Ovvvm99urriq6EjXDEWPNdOut8OijcOGFtvRq67p2hdtvz301t902zyPfbbeiq5KKlRKMHJlfBx96KI8Of/RRvm+llfL80AEDoH9/u0lo7i27bN4m+sorc0tUF0JXFYOxssmT8/zTNdaAwYOLrkaV0KNHHi3eeee8MO+55+C00+ylqvIralpBS69lkybl0d5//jMf//oXfPxxvm+ppfLo8BZb5K4uvXu3fr1qP/bfP88xfvhh2HLLoqtRIwZjZX/4A7z1Fjz4oAvu2pPFFoO//S0vwjvjDHj+ebj+eujWrejKpPL68su8WG7EiHwMH56nSUyfnu9fZRXYYQfYaKO8QGqllezfrtbz/e/nT2Yvv9xgXGVMQIIxY/Iq6h128D9oe9SpE1x8cV5Nf8ghsP76cMcdbh+t2jV5cl5getFF+ZOQESPghRdg6tR8f7dusO66eV7wxhvnzRZ69Ci2ZrUvXbrkNR5Dh8L48dC9e9EVqZ7BWPDLX+bRFPvatm9DhsBqq+WV9RtsANdcAwMHFl2VNGszZuSpD++9l4NwwzFu3MxzunXLPdmPPDJ/7ds3b7bhaLCKtv/+cP75eTH0oYcWXY3qGYzbu2eeyQsAjjoqf3SoYhU9F3OzzfJHzN//ft6YYLvt4He/g9VXL6YuqcGkSTkANxyjR+evX36Z74+Anj3zXOCNNoKll84jwr17G4JVndZeO/+gdvnl+dM6/51WBYNxe5ZSnlu66KJwwglFV6Nqscwy8MQTeSTjtNNgrbXggAPg5JPdsECtb9o0GDv26yH4k09mnjP//HlxXEMAXnppWHLJr3eKsEesqt3++8PBB+dBqr59i65GGIzbt5tvhn/8Ay65BL7xjaKrUTXp0gV+9rPcnuqUU/JczeuvzyNwRx2Vg4k0L2bMyHMrG8Lv++/nr2PHzlwQV1eXfxhbaaUchBuORRZxdE1tw+6759fUyy83GFcJg3F7NXkyHHNMHg3cf/+iq2meO0cVb9FFc8eSQw6B447LnyxccAHsvTfstResuWbRFaraTZsGH34IH3ww83j//bzod8qUmef16AG9euXXpIYAvPjidslR29atW26Zef31cPbZuce8CuUrTnt1wQXw9tu5PZt9a9WSlVaCW26Bv/89zzk+55z8dZ11ckDeYw+nWbRnU6bAu+/m15TXX8/HyJH5+M9/cjhu0K1bDsCbbZanP/TqlY/WCAT+cK1asP/+8Kc/5dfYQYOKrqbdi5RSIU/cr1+/NHz48EKeu90bPx5WWCG3KLr33pbP982l7ZvTTV3GjYO//CV3rnj66bxz01Zbweab5930+vZ1Z7BZKfL/05z+PacEEyfm0d2xY/PXMWPyqO+oUTkIjxqVR4Abv5d06ZJ/mFp55fz1/fcQ58RaAAAXaElEQVRzCF5ySUfE1HaUazOslPL/k969826LKruIGJFS6lfKuY4Yt0ennQYTJsCZZxZdiWpVz555esUhh8Crr8K11+Y568cem++fb74cjjfeOB+rrgrLLWcoKrcZM/IxffrMY8aM3K932rSvHlOnwl13weefzzwmTcpfJ0yATz/NC9waH+PHwxdffP15O3bMb+J9+uTe58sum3/dp8/M+cCNt7n1h2tp1iJgv/1y69Q338wDVyqMI8btzVtv5Y0bBg3Kk/1L4Zta21eukY9x42Zur/vEE7n1W0M7Lcgjhssvn4/llstzSLt3z4upGh8LLpjD9dxM80kph8CpU/NH/FOm5Bqa+9rcrxt+X+OvDUfToNnw6+nTv/q14deNj4bb3nsvh9eUZgbb5r5veqQ0M/g2vm1eReTr3XDtu3Wb+evu3fMUmSWWyH9XDb/u0eOrwbclvoaoLSrX6ybk14VllslrOU47rXyPK8ARY83OL36Rw8avf110JWqLevbMm4I0bAzy5Zd529033shzTRuORx/Nc+paCnYReXSyri5/7dAh/57GB3x11HTGjNb78803Xz46dvz60VBjw68bH41va/hzND4ivn5bKUdd3cyvDUeHDl+vraHmXXeFBRb46tG1qx0epKIttVTuG3/VVbk1potOC+OVb0+efhpuuAGOPz7/J5RaW+fOeYvp9df/+n1TpuRdyy65JH+k3/iYMqX50dgZM3KIazhg5q+bC6R1dTNHnpuG2B13zPV16jTz63zz5V83BOCG2+Z29Lo5RY6eNvf3IKk67L8//OAHcN99MGBA0dW0Wwbj9iIlOProPKJ3zDFFVyPl0NnQlaAIW2xRzPNKUnMGDMivhxdeaDAukMG4vbjrLnj88fwfbqGFiq5G1aY9zgH1zyypmsw3Hxx0EJx4Ym51uPLKRVfULs3B6gnVrGnT8ijxyivDgQcWXY0kSWrO4MH507QLLii6knbLYNweXH55bql1xhn5J1JJklR9Fl8cfvhDuPLK3EZRFVdSMI6ILSLilYh4JyJuioiFmtx/VUSMjYg36o8q3WO4HZo4EU46CTbddGanAEmSVJ0OPRQ++wyuvrroStqlFoNxRHwD+AuwN9AHmAqc0Mypx6aUVqw/SmyQq1Z3xhl5x6qzz7YlkyRJ1W699fLOtOef37rtJ9WsUkaMtwZeTCk9nfJuIBcDczX0GBGDI2J4RAwfN27c3DyE5sQ77+RAvOeetmmSJKlWHHYYvP46PPBA0ZW0O6UE4xWA/zT6fhTQtL/SNOCUiHg9Ii6NiG7NPVBKaWhKqV9KqV/Pnj3nrmKV7uc/z19/85ti65AkSaXbaae8y+R55xVdSbtTSjCeUX80SE2+J6V0QEqpN9AX6AacUbYKNXeGDYPrr4ef/jRvMylJkmpDp07w4x/Dvffm1m2qmFKC8WigcbLqA7zd3IkppQnANcBa81yZ5l5KcNRR+afN444ruhpJkjSnBg/OnaQuvLDoStqVUoLxfcD6EbFWRATwY+DaxidExDfrv3YGBgFPlLtQzYGbboJ//hNOPRUWXLDoaiRJ0pxaYomZrdsmTiy6mnajxWCcUhoP7AXcCLwLTAHOi4hzI2K7+tPOjohRwMvAJ8CJrVSvWjJ5Mhx7LKy1Fuy7b9HVSJKkuXXooTkU27qtYkraEjqldCdwZ5Obj2h0v5t6V4vzzoO334YHH4S6uqKrkSRJc2v99WGDDXLrtoMPhg7uy9bavMJtyYcf5ukTAwbAllsWXY0kSZpXhx6aF+DZuq0iDMZtyUknwRdfwFlnFV2JJEkqh112gSWXhN/+Ni+uV6syGLcVzz8PQ4fm9i7f/GbR1UiSpHLo1CnvS/D44/Dww0VX0+YZjNuCGTNgyBDo3h1+9auiq5EkSeV04IGw9NJw4omOGrcyg3FbcNll8OSTefvn7t2LrkaSJJVTly7wy1/mVqz33190NW2awbjWffhhbs/Wvz/stVfR1UiSpNaw337Qp4+jxq3MYFzrjj4aPv8cLr4YIoquRpIktYZOneCEE+Dpp+Guu4qups0yGNeyRx6Ba6/NI8arrFJ0NZIkqTXtvTcsv7yjxq3IYFyrvvwSDjoo/wf5xS+KrkaSJLW2+ebLrVmfew5uu63oatokg3GtOvPM3PD7wguha9eiq5EkSZWwxx6w8sp51HjGjKKraXMMxrXojTfgtNNg111h222LrkaSJFVKx465NeuLL8LNNxddTZtjMK41KcFPfgKdO8M55xRdjSRJqrRdd4XVVssBefr0oqtpUwzGteaaa/J+6aedBr16FV2NJEmqtLq6HIpfeQX+/Oeiq2lTDMa1ZOTIPFr8ne/krZ8lSVL7tNNOsM46ebvoCROKrqbNMBjXiilTYPfd8xSKP/0p/7QoSZLapw4d4I9/hPfeg+OOK7qaNsNgXCt+8Qt45hm44oq8X7okSWrfNtgAjjgib/L1+ONFV9MmGIxrwX33wdlnw8EHw8CBRVcjSZKqxSmnwHLLwQEHwBdfFF1NzTMYV7uxY2GffWCNNeCss4quRpIkVZMFFoBLL4XXX4eTTy66mppnMK5mM2bkUDxhAtxwgxt5SJKkr9tiizxifNZZMGJE0dXUNINxNTvnHLj//vx19dWLrkaSJFWr3/0OFlsM9tsPpk4tupqaZTCuVk89lVuwfP/7MGRI0dVIkqRq1q1bXoT3/PNw5plFV1OzDMbVaORI2H57WGopuOwyiCi6IkmSVO0GDsy74v3613nzD80xg3G1ef992HrrHIYfeAC6dy+6IkmSVCvOOw8WXBD23hsmTSq6mppjMK4mn3wC22wDH38M994LK61UdEWSJKmWLL44XH55XoS3554wfXrRFdUUg3G1+OIL2GGHPI3ittugb9+iK5IkSbVoxx3h3HNznjjiCEip6IpqRseiCxAwbRr88IfwxBPwl7/ktiuSJElz67DD4J138gZhffrA0UcXXVFNMBgXLSUYPBjuvBMuugh22aXoiiRJUltw5pnw7rvws5/B0kvDbrsVXVHVMxgXaepUOPxwuPJKOOkk+PGPi65IkiS1FR06wNVXw5gxecOwJZaA/v2LrqqqOce4KB9/nBfaXXwxHHNMDsaSJEnl1KVLnmu8wgp57vFLLxVdUVUzGBfhxRdhvfXynOKrr4YzzrBXsSRJah2LLJK7Xc0/f24J+9RTRVdUtQzGlXbbbbDRRrkLxWOP5T6DkiRJralPn7w/QqdOsNlmMHSo3SqaYTCulJTglFPyFs+rrgrDh8OGGxZdlSRJai/WWCPnj+9+F4YMgf33zwN1+h+DcSW8/joMGAAnngiDBuWR4qWWKroqSZLU3vToAXffnTPJlVfCJpvAW28VXVXVMBi3pk8/zX0DV18dHn88N9u+5hro2rXoyiRJUntVVwcnn5xbxb71Vt5U7N57i66qKhiMW8O0aXDJJXlL59//Ps8jfv313JrNRXaSJKkaDBiQp1Ysswx873swcCA8+2zRVRXKYFxO06fDPffAuuvCQQfBaqvlvcovuyz3DpQkSaomK6wA//xnHkF+7LGcYX7wA3j++aIrK4TBuBxGjoRf/hKWXRa23x4++wxuuQUefRS+9a2iq5MkSZq1+efPc47ffjvvq/DQQ7D22nk33hdfLLq6ijIYz61PP82tTjbeGL75TTj99PyP6MYb4ZVX8k9bTpuQJEm1ols3+NWvckA+/ni4/35Yc82898Kpp8ILL7T5Fm8G41K9914OvYcfDv36waKL5lYnEybA734Ho0fDXXfln646dy66WkmSpLmzyCK5xexbb8Fvf5sX651wAqy1Vp56ceSR8MgjMGlS0ZWWXaQSkn9EbAFcACwADAP2SylNbHT/OsAVQE/gVWDvlNIHs3vMfv36peHDh89D6a1gxgz44AP4z39mHiNHwr/+BaNG5XO6doUNNsjtTXbcMa/kbOsjw0OHFl2BJEnVZfDgoiuorA8+yAOAt98Of/sbfPllzj8rrJBHlRsfyy2XNxKpEhExIqXUr6RzWwrGEfEN4E1gO2A4cB0wOqV0TP39HYDXgaNTSrdGxG+BFVJKu87ucQsJxs8/D8OGwfjx8PHHX/364Yf5o4PJk2eeH5FXaq63Xg7Cm2wC66wD881X2bqLZjCWJOmr2lswbuzzz/M85GefzdMrXngB3ngjDzA26N4dllwyNx9YYon867XXzvs5VNicBOOOJZyzNfBiSunp+ge/GLgMOKb+/r5AXUrp1vrvLwJej4hIpQxHV9Idd+SPAiBPd+jRI//F9eiRew0PGADLLz/z6NOnqn7ikSRJKtwCC8AOO+SjwRdfwMsv55D87rswZkweZR4zJne9+OAD+M53CgnGc6KUEePjgJVTSvvVf78M8FJKaaH673cDBqeUNq//PoCpwOIppY+bPNZgoOFHrG8Cr81D7YsCH83D71fpvNaV47WuHK915XitK8drXTle68qZ12vdJ6XUs5QTSxkxnlF/NEhNvm96f3Pn5BtTGgqU5XP5iBhe6rC45o3XunK81pXjta4cr3XleK0rx2tdOZW81qV0pRgNLNPo+z7A27O5fylgUkrpk3muTpIkSaqQUoLxfcD6EbFW/TSJHwPXNrr/KWD+iNim/vuDm9wvSZIkVb0Wg3FKaTywF3Aj8C4wBTgvIs6NiO1SStOAnYAzI2I0sAZwQivW3MBWCZXjta4cr3XleK0rx2tdOV7ryvFaV07FrnVJfYwlSZKkts6d7yRJkiQMxpIkSbMVEXURsX7RdbQHRV/rmgnGEbFORDwTEe9GxIMRsWQz5+wREf+OiDcj4ln/Ec+ZiNgiIl6JiHci4qaIWKjJ/S3+Hag0JVzrIyLi5Yj4T0T8PSJWKqrWWtfStW503mERkSLC9ktzqYR/1xERJ0TEqIh4KyJOLarWWlfCtd4gIp6KiDciYkRE9C2q1loWER0j4kZgDPDwLM7xvbEMSrzWrf7eWBPBuH7b6VuAU1JKvclbU/+hmVO7AN9OKa0AnA9cWrkqa1v91t9/AfYmt+SbSqNFlHPwd6AWtHSt630JrJtSWh54BDirokW2ESVeayJiNWBn4J2KFtiGlHitDwP6A2unlJYDflPJGtuKEq/11cAZKaUVgSuAsytaZNuRyJ22+jd3p++NZTXba12v1d8bayIY0/y20zvUt4/7n5TSFSml/9Z/+xTQo4I11rr/bf1dv5X3xcDARveX9HegkrR0rUkpXZxSmlz/rf+W516L1zoiOpG3uT+I/MKsuTPbax0RdcBxwJCU0qcAKaVJhVRa+1r8dw1MZuZGW12A9ytYX5uRUpqeUroT+HwWp/jeWCYlXOuKvDfWSjBeAfhPo+9Hk3ft6z6b33MgcF1rFtXGNL3Go4Bes7m/lL8DNa+la93UAfhveW6Vcq1PAf6SUnq5YlW1TS1d695AAHtHxKsR8c+I2LCSBbYhpfy7/iFwQkQ8CGwDHFKh2tob3xuL0yrvjVUVjCPi1Ih4sclxB3Ow7XT94wwB1gFObN2K25Sybf2tFrV0rf8nIn5D/ujojxWoqy2a7bWOiG+TXyvOq3BdbVFL/66XABYFhqWUVgHOBf7qyNpcKeU1ZH/gAfKmW58De1SmtHbH98YCtOZ7Y1UF45TS8SmlNZocOzAH205HxGHA7sCAlNKXlam8TXDr78pp6VoDEBG/A1YE9kw2HJ9bLV3rn9Tf9mxEPEcedbsuIjaoWIVtR0vXegwwMaV0d/33NwGL4TShuTHbax0RqwB7pJSOSym9Tv4E9ez6aUMqL98bK6y13xurKhjPRknbTkfEL4CtgO1SShMrWF9b4NbflTPbax0RHSLij8A3gN3qd5fU3JnttU4p/TCltEpKaZ2U0jrkeZh7ppSGFVRvLWvpWr8NvB0RDXNhdwT+k1L6qOKV1r6WXq+/BBapD8gAGwATyIv0VF6+N1ZIpd4ba2bnu/oRnKHk0YVngH1SSp9ExDHAx8Aw4AXyXKuGizU6pdS/gHJrUkT8H/A7YEHgQWAIcCZwf0rp3ln9HRRVby2b3bUG6oA7gTcb/ZZhKaU9K11nW9DSv+sm574N7JxSGl7pOtuCEl5Dvkle6LgkeQT5xymlF4qqt5aVcK2HAMcC04FPgJ+llB4rqt5aFhGvkhcwLkOeT/xy/VffG8tsdteaCr031kwwliRJklpTrUylkCRJklqVwViSJEnCYCxJkiQBBmNJkiQJMBhLkiRJgMFYkiRJAgzGklS1IqKuElsmR0TH1n4OSaoFBmNJKoOIeG0Wt58bEcfN4WOdHBEnAgcBl0ZEh/rbO0TEoREx/zzWulNEnFT/69WB1yKiy7w8piS1BQZjSSqPPgARsUtEvNFwAPsCRze+rSGUzsZUoBNwFdCr/qD+tt2A2yOic0QcFBGphWPpxg8cEd2BC4HXAFJKLwFjgcPLcREkqZa5850klUFETAa2abrtbkScC4xJKZ3e5PYfkgPqZ8083MLk7U8bbyt7fkrp7IjoAQwH/gocXX9eg9uBu8nb0wKQUprW6Dk7APcCn6eUftDo9vWAR+rrf6LkP7QktTHOK5OkeRARGwOL1397UUQcA/yl0SmdgBQRxze6bSNgPuCulNK+zTzmPsDWKaU9I6JrSumLhvtSSh9HxPbAGGATYHBKae/635eAGSmlaRGxBHBjRGyfUppY/9svBFYA+jZ+vpTS0xFxAnkkeseU0j/m8nJIUk0zGEvSvFkfmFH/6wOADYBFG93/O/JUhbMa3fYlsDY5MN8PLNXkMX8LLFP/6xMj4r+NR5xTSi8DRMRzwFb14ffuJo/xK+DTlNLE+sV1FwI7AJullP7b9A+RUjonIhYG/hYRvwTOSylNLekKSFIbYTCWpHnTG3gMIKX0r4g4HDii0f3fIAfnAxrd9jbwZ2BSSmmbpg8YEUsCF0REN2Bv8ggzEfEosGn9c3VMKX0WEScD50fEw41+//rAIGCN+psuAbYANk8pvTGrP0hK6eSIGAX8AViJvPhPktoN5xhL0jyIiLuBnwNPpZRK7uxQH2gBJgI/A8YBnYGxKaVN6xfuvQW8DBwLfJlSShGxIDAxpRT1jzMfcDxwKnArcBcwElgzpfSH+nOWB6YBo0oobQGgJ/DflNKnpf55JKktMBhL0jyIiHXJ4fXThmBcH2q7krtLNNYZ+DiltEZE/A24GFgO6JJSOjUi1gD+WB+MLwF2ApYF9gT6pZQObAjG5K5CCzR5/JuA+4DLG902I6U0qUnNxwF9U0q7NLptCeB9oC75xiCpnXIqhSTNg5TSMwDN7MNxDjC6yW0rArtFxKrAxsCu5GD8k4jYGegCfBQRRwI7AtPJUyl2JU+9aKwPeUS5qW2Bcxt9P4ocrhtbDninyW2dgcmGYkntmcFYklpHZ3LQbXobwIHADSml8RFxJ3BPSunliNgF+Du5f/HG5LZt15IX6/2p8QOllN4GvpLGI+IucqeLP7ZQ2ybA6U1u6wpMauZcSWo3DMaS1Dr2B6Y0ua0LuW/xWcB3I+IA4Blgl/pOEAcDq6WUto2IbimlNyNiT+D1ptMhIPcfTik9PSdFRcS3gJWB+5vctRAGY0ntnDvfSVLr2CGltErjg7xrHSml98k74iVgMWCjlNIMYC9gYEQsBPw2In5B7mZxZaPH7QgQEb8Hrp6TgiKiE3ABcEVKaVyTu5cit5WTpHbLYCxJrSgi6iJixYjoBXwbmBwRW5NHba8DvgB6R8QCKaXR5M03OgNbAf8GjgHWrh9dBvhO/dcewIZzUEd38s54iwDHRUTHiFgrIpaIiMWBwwB3vZPUrjmVQpJaVwLuAeYHJgOnAB8BB6aUJkfEMOA9YHz9znUN7gLur9/Fbifgg/rbnwB2TyndUGoBEdGPvBX0S+Rexp/Wbw/9T3Jni+n1j/ubefhzSlLNs12bJLVx9SF4K+CBpl0n6u+LlNL0QoqTpCpiMJYkSZJwjrEkSZIEGIwlSZIkwGAsSZIkAQZjSZIkCTAYS5IkSYDBWJIkSQLg/wEs3O+j0j15RgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2be2e518>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig,ax = plt.subplots(1,1,figsize = (12,5))\n",
    "sns.distplot(final_re['初评情感评分'],color = 'red')\n",
    "\n",
    "plt.yticks(fontsize=11)\n",
    "plt.xticks(fontsize=11)\n",
    "\n",
    "ax.set_xlabel('情感评分', fontsize=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>品牌</th>\n",
       "      <th>初评情感评分</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>三个魔发匠</td>\n",
       "      <td>0.547250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>有情生姜</td>\n",
       "      <td>0.630458</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>白云山敬修堂</td>\n",
       "      <td>0.573973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>章光101</td>\n",
       "      <td>0.145513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>霸王防脱</td>\n",
       "      <td>0.615317</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       品牌    初评情感评分\n",
       "0   三个魔发匠  0.547250\n",
       "1    有情生姜  0.630458\n",
       "2  白云山敬修堂  0.573973\n",
       "3   章光101  0.145513\n",
       "4    霸王防脱  0.615317"
      ]
     },
     "execution_count": 248,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_re.groupby('品牌')['初评情感评分'].median().reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
